home *** CD-ROM | disk | FTP | other *** search
/ Macwelt 1 / Macwelt DVD 1.toast / Software für Mac-OS X / Entwickler-Tools / netbeans / modules / ext / djava.jar / koala / dynamicjava / interpreter / TreeClassLoader.class (.txt) < prev    next >
Encoding:
Java Class File  |  2000-03-14  |  2.2 KB  |  71 lines

  1. package koala.dynamicjava.interpreter;
  2.  
  3. import java.net.URL;
  4. import java.net.URLClassLoader;
  5. import java.util.HashMap;
  6. import java.util.Map;
  7. import java.util.Set;
  8. import koala.dynamicjava.tree.TypeDeclaration;
  9.  
  10. public class TreeClassLoader extends ClassLoader implements ClassLoaderContainer {
  11.    protected Map classes = new HashMap(11);
  12.    protected Map trees = new HashMap(11);
  13.    protected Interpreter interpreter;
  14.    protected ClassLoader classLoader;
  15.  
  16.    public Class defineClass(String var1, byte[] var2) {
  17.       Class var3 = ((ClassLoader)this).defineClass(var1, var2, 0, var2.length);
  18.       this.classes.put(var1, var3);
  19.       this.trees.remove(var1);
  20.       return var3;
  21.    }
  22.  
  23.    public ClassLoader getClassLoader() {
  24.       return this.classLoader;
  25.    }
  26.  
  27.    public boolean hasDefined(String var1) {
  28.       return this.classes.containsKey(var1);
  29.    }
  30.  
  31.    public Set getClassNames() {
  32.       return this.classes.keySet();
  33.    }
  34.  
  35.    public void addTree(String var1, TypeDeclaration var2) {
  36.       this.trees.put(var1, var2);
  37.    }
  38.  
  39.    public TypeDeclaration getTree(String var1) {
  40.       return (TypeDeclaration)this.trees.get(var1);
  41.    }
  42.  
  43.    public void addURL(URL var1) {
  44.       if (this.classLoader == null) {
  45.          this.classLoader = new URLClassLoader(new URL[]{var1});
  46.       } else {
  47.          this.classLoader = new URLClassLoader(new URL[]{var1}, this.classLoader);
  48.       }
  49.  
  50.    }
  51.  
  52.    protected Class findClass(String var1) throws ClassNotFoundException {
  53.       if (this.classes.containsKey(var1)) {
  54.          return (Class)this.classes.get(var1);
  55.       } else {
  56.          try {
  57.             if (this.classLoader != null) {
  58.                return Class.forName(var1, true, this.classLoader);
  59.             }
  60.          } catch (ClassNotFoundException var3) {
  61.          }
  62.  
  63.          return this.interpreter.loadClass(var1);
  64.       }
  65.    }
  66.  
  67.    public TreeClassLoader(Interpreter var1) {
  68.       this.interpreter = var1;
  69.    }
  70. }
  71.